package pe.edu.ucv.daos;

import java.util.List;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import pe.edu.ucv.entidades.Equipo;
import pe.edu.ucv.entidades.EquipoLaboratorio;
import pe.edu.ucv.entidades.Laboratorio;

/**
 *
 * @author Wilfredo Atoche
 */
@Stateless
@LocalBean
public class EquipoLaboratorioDAO {

    @PersistenceContext EntityManager em;
    public void crear(EquipoLaboratorio equipoLaboratorio){
        em.persist(equipoLaboratorio);
    }
    public void actualizar(EquipoLaboratorio equipoLaboratorio){
        em.merge(equipoLaboratorio);
    }
    public void borrar(Integer id){        
        EquipoLaboratorio equipoLaboratorio = em.find(EquipoLaboratorio.class, id);
        em.remove(equipoLaboratorio);
    }
    public List<EquipoLaboratorio> listarTodos(){
        return em.createNamedQuery("EquipoLaboratorio.findAll",EquipoLaboratorio.class).getResultList();
    }  
     public List<EquipoLaboratorio> listarByLaboratorioId(Laboratorio laboratorio){
        return em.createNamedQuery("EquipoLaboratorio.findByLaboratorioId",EquipoLaboratorio.class)
                .setParameter("laboratorioId", laboratorio.getId())
                .getResultList();
    } 
    public List<Equipo> listarEquiposDisponibles(){
        String sql = "SELECT E.* FROM equipo E WHERE E.ID NOT IN (SELECT EL.EQUIPO_ID "
                + "FROM equipo_laboratorio EL)";
        List<Equipo> list = em.createNativeQuery(sql,Equipo.class)
                .getResultList();
        
        return list;
    } 
    public void guardar(EquipoLaboratorio equipoLaboratorio){
        if(equipoLaboratorio.getId()==null){            
            crear(equipoLaboratorio);
        }else{
            actualizar(equipoLaboratorio);
        }
    }
}
